# icecat-mac

Patches and scripts for building GNU IceCat on macOS

## Setting up the Environment

### Xcode

Install [Xcode](https://developer.apple.com/xcode/). Afterwards install the command line developer tools with

```
xcode-select --install
```

The headers are not installed by default so you have to go to `/Library/Developer/CommandLineTools/Packages` and install the package from that folder manually.

Next, download the 10.11 macOS SDK from [https://github.com/phracker/MacOSX-SDKs](https://github.com/phracker/MacOSX-SDKs), unpack it into your home directory and link it into `/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs`.

### Homebrew

Install [homebrew](https://brew.sh/). Afterwards use it to install the following dependencies

* autoconf@2.13
* llvm
* rust
* yasm

### Other Dependencies

There might be further dependencies required. The `configure` script will alert their absence when trying to build IceCat.

## Building

Simply run

```
./icebuild
```

to download, patch and compile the sources. See `icebuild help` for further options. The final `.dmg` package will be placed in `icecat-${version}/objdir/dist`.

## Patches

### 0001-replace-binpath-with-respath.patch

Sets the right path for the custom GNU addons during packaging.

### 0002-allow-access-to-view-bridge.patch

Loosens sandboxing to allow access to `/Library/Preferences/com.apple.ViewBridge.plist`. I couldn't figure out what consequences the lack of access to this file has but it causes an error on the terminal when running IceCat.

```
2019-01-18 08:15:45.325 plugin-container[25006:2228360] unable to obtain configuration from file:///Library/Preferences/com.apple.ViewBridge.plist due to Error Domain=NSCocoaErrorDomain Code=257 "The file “com.apple.ViewBridge.plist” couldn’t be opened because you don’t have permission to view it." UserInfo={NSFilePath=/Library/Preferences/com.apple.ViewBridge.plist, NSUnderlyingError=0x10b9ec250 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
```

## Pre-Built Binaries

If possible, you should build IceCat from sources using the steps above. If for some reason you cannot do this, you can install one of the pre-built DMGs from the `dmgs` folder. You are using these binaries at your own risk though and I will not take responsibility for any damage caused.

Note also that the binaries themselves are not free (libre) software because they were compiled against Apple's proprietary macOS SDK. Hein-Pieter van Braam-Stewart has generously granted authorization to still host them on NotABug.

## License

IceCat itself is licensed under MPL 2.0 and GPLv3. The remaining code in this repository is subject to GPLv3.
